import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// https://vite.dev/config/
export default defineConfig({
  plugins: [vue()],
  // 配置构建选项，确保资源路径正确
  build: {
    outDir: 'dist',
    assetsDir: 'assets',
    // 设置publicPath为相对路径，确保资源在不同环境下都能正确加载
    publicPath: './',
    emptyOutDir: true,
    // 优化构建
    minify: 'esbuild',
    sourcemap: false
  },
  // 配置资源路径别名
  resolve: {
    alias: {
      '@': '/src'
    }
  },
  server: {
    host: true,
    port: 5173,
    allowedHosts: true, // 允许所有主机访问，解决ngrok穿透域名被拒绝的问题
    strictPort: false,
    proxy: {
        '/api': {
          // 动态代理配置，根据请求来源自动适配
          target: 'http://localhost:3002',
          changeOrigin: true,
          followRedirects: true,
          autoRewrite: true,
          secure: false,
          // 不需要重写路径，因为后端API已经包含/api前缀
          // 配置代理请求头，确保后端能够正确识别请求来源
          headers: {
            'X-Forwarded-For': '${remoteAddress}',
            'X-Real-IP': '${remoteAddress}',
            'Access-Control-Allow-Origin': '*'
          },
          // 重试配置
          proxyTimeout: 60000,
          timeout: 60000
        },
        // 优化WebSocket代理配置，解决连接重置问题
        '/ws': {
          target: 'ws://localhost:8081',
          ws: true,
          changeOrigin: true,
          proxyTimeout: 60000,
          timeout: 60000,
          autoRewrite: true,
          followRedirects: true,
          secure: false,
          // 允许重连
          headers: {
            'Connection': 'keep-alive'
          }
        }
    }
  }
})
